﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Threading;

namespace Xpus.Website.Core.Membership
{
	/// <summary>
	/// 用于在用户验证完毕后，构造自定义的用户表示对象，并保存在HttpContext.User中。
	/// </summary>
	public class XpusPrincipalModule : IHttpModule
	{
		#region IHttpModule Members
		/// <summary>
		/// 释放资源。
		/// </summary>
		public void Dispose()
		{
		}

		/// <summary>
		/// 初始化模块，并使其为处理请求做好准备。
		/// </summary>
		/// <param name="context">一个 HttpApplication，它提供对 ASP.NET 应用程序内所有应用程序对象的公用的方法、属性和事件的访问。</param>
		public void Init(HttpApplication context)
		{
			context.PostAuthenticateRequest += onPostAuthenticateRequest;
		}
		#endregion

		void onPostAuthenticateRequest(object sender, EventArgs e)
		{
			HttpApplication app = (HttpApplication)sender;
			app.Context.User = new XpusUserPrincipal(app.User);
			Thread.CurrentPrincipal = app.Context.User;
		}
	}
}
